1 /*
2 
3 Boost Software License - Version 1.0 - August 17th, 2003
4 
5 Permission is hereby granted, free of charge, to any person or organization
6 obtaining a copy of the software and accompanying documentation covered by
7 this license (the "Software") to use, reproduce, display, distribute,
8 execute, and transmit the Software, and to prepare derivative works of the
9 Software, and to permit third-parties to whom the Software is furnished to
10 do so, all subject to the following:
11 
12 The copyright notices in the Software and this entire statement, including
13 the above license grant, this restriction and the following disclaimer,
14 must be included in all copies of the Software, in whole or in part, and
15 all derivative works of the Software, unless such copies or derivative
16 works are solely in the form of machine-executable object code generated by
17 a source language processor.
18 
19 THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
20 IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
21 FITNESS FOR A PARTICULAR PURPOSE, TITLE AND NON-INFRINGEMENT. IN NO EVENT
22 SHALL THE COPYRIGHT HOLDERS OR ANYONE DISTRIBUTING THE SOFTWARE BE LIABLE
23 FOR ANY DAMAGES OR OTHER LIABILITY, WHETHER IN CONTRACT, TORT OR OTHERWISE,
24 ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
25 DEALINGS IN THE SOFTWARE.
26 
27 */ 
28 
29 module derelict.purple.util;
30 
31 import derelict.glib.gtypes;
32 import derelict.glib.glibconfig;
33 import derelict.glib.glist;
34 import derelict.glib.gdataset;
35 import derelict.purple.account;
36 import derelict.purple.signals;
37 import derelict.purple.notify;
38 import derelict.purple.xmlnode;
39 import core.stdc.config;
40 import core.stdc.time;
41 import core.stdc.stdio;
42 
43 extern (C):
44 
45 alias _PurpleUtilFetchUrlData PurpleUtilFetchUrlData;
46 alias _PurpleMenuAction PurpleMenuAction;
47 alias _PurpleKeyValuePair PurpleKeyValuePair;
48 alias char* function (const(char)*, c_ulong) PurpleInfoFieldFormatCallback;
49 alias void function (_PurpleUtilFetchUrlData*, void*, const(char)*, c_ulong, const(char)*) PurpleUtilFetchUrlCallback;
50 
51 struct _PurpleMenuAction
52 {
53 	char* label;
54 	PurpleCallback callback;
55 	gpointer data;
56 	GList* children;
57 }
58 
59 struct _PurpleKeyValuePair
60 {
61 	gchar* key;
62 	void* value;
63 }
64 
65 struct _PurpleUtilFetchUrlData;
66 
67 version(Derelict_Link_Static)
68 {
69     extern( C ) nothrow 
70     {
71 	    PurpleMenuAction* purple_menu_action_new(const(char)* label, PurpleCallback callback, gpointer data, GList* children);
72         void purple_menu_action_free(PurpleMenuAction* act);
73         void purple_util_set_current_song(const(char)* title, const(char)* artist, const(char)* album);
74         char* purple_util_format_song_info(const(char)* title, const(char)* artist, const(char)* album, gpointer unused);
75         void purple_util_init();
76         void purple_util_uninit();
77         gchar* purple_base16_encode(const(guchar)* data, gsize len);
78         guchar* purple_base16_decode(const(char)* str, gsize* ret_len);
79         gchar* purple_base16_encode_chunked(const(guchar)* data, gsize len);
80         gchar* purple_base64_encode(const(guchar)* data, gsize len);
81         guchar* purple_base64_decode(const(char)* str, gsize* ret_len);
82         guchar* purple_quotedp_decode(const(char)* str, gsize* ret_len);
83         char* purple_mime_decode_field(const(char)* str);
84         const(char)* purple_utf8_strftime(const(char)* format, const(tm)* tm);
85         const(char)* purple_get_tzoff_str(const(tm)* tm, gboolean iso);
86         const(char)* purple_date_format_short(const(tm)* tm);
87         const(char)* purple_date_format_long(const(tm)* tm);
88         const(char)* purple_date_format_full(const(tm)* tm);
89         const(char)* purple_time_format(const(tm)* tm);
90         time_t purple_time_build(int year, int month, int day, int hour, int min, int sec);
91         time_t purple_str_to_time(const(char)* timestamp, gboolean utc, tm* tm, c_long* tz_off, const(char*)* rest);
92         gchar* purple_markup_escape_text(const(gchar)* text, gssize length);
93         gboolean purple_markup_find_tag(const(char)* needle, const(char)* haystack, const(char*)* start, const(char*)* end, GData** attributes);
94         gboolean purple_markup_extract_info_field(const(char)* str, int len, PurpleNotifyUserInfo* user_info, const(char)* start_token, int skip, const(char)* end_token, char check_value, const(char)* no_value_token, const(char)* display_name, gboolean is_link, const(char)* link_prefix, PurpleInfoFieldFormatCallback format_cb);
95         void purple_markup_html_to_xhtml(const(char)* html, char** dest_xhtml, char** dest_plain);
96         char* purple_markup_strip_html(const(char)* str);
97         char* purple_markup_linkify(const(char)* str);
98         char* purple_unescape_text(const(char)* text);
99         char* purple_unescape_html(const(char)* html);
100         char* purple_markup_slice(const(char)* str, guint x, guint y);
101         char* purple_markup_get_tag_name(const(char)* tag);
102         const(char)* purple_markup_unescape_entity(const(char)* text, int* length);
103         char* purple_markup_get_css_property(const(gchar)* style, const(gchar)* opt);
104         gboolean purple_markup_is_rtl(const(char)* html);
105         const(gchar)* purple_home_dir();
106         const(char)* purple_user_dir();
107         void purple_util_set_user_dir(const(char)* dir);
108         int purple_build_dir(const(char)* path, int mode);
109         gboolean purple_util_write_data_to_file(const(char)* filename, const(char)* data, gssize size);
110         gboolean purple_util_write_data_to_file_absolute(const(char)* filename_full, const(char)* data, gssize size);
111         xmlnode* purple_util_read_xml_from_file(const(char)* filename, const(char)* description);
112         FILE* purple_mkstemp(char** path, gboolean binary);
113         const(char)* purple_util_get_image_extension(gconstpointer data, size_t len);
114         char* purple_util_get_image_checksum(gconstpointer image_data, size_t image_len);
115         char* purple_util_get_image_filename(gconstpointer image_data, size_t image_len);
116         gboolean purple_program_is_valid(const(char)* program);
117         gboolean purple_running_gnome();
118         gboolean purple_running_kde();
119         gboolean purple_running_osx();
120         char* purple_fd_get_ip(int fd);
121         int purple_socket_get_family(int fd);
122         gboolean purple_socket_speaks_ipv4(int fd);
123         gboolean purple_strequal(const(gchar)* left, const(gchar)* right);
124         const(char)* purple_normalize(const(PurpleAccount)* account, const(char)* str);
125         const(char)* purple_normalize_nocase(const(PurpleAccount)* account, const(char)* str);
126         gboolean purple_str_has_prefix(const(char)* s, const(char)* p);
127         gboolean purple_str_has_suffix(const(char)* s, const(char)* x);
128         gchar* purple_strdup_withhtml(const(gchar)* src);
129         char* purple_str_add_cr(const(char)* str);
130         void purple_str_strip_char(char* str, char thechar);
131         void purple_util_chrreplace(char* string, char delimiter, char replacement);
132         gchar* purple_strreplace(const(char)* string, const(char)* delimiter, const(char)* replacement);
133         char* purple_utf8_ncr_encode(const(char)* in_);
134         char* purple_utf8_ncr_decode(const(char)* in_);
135         gchar* purple_strcasereplace(const(char)* string, const(char)* delimiter, const(char)* replacement);
136         const(char)* purple_strcasestr(const(char)* haystack, const(char)* needle);
137         char* purple_str_size_to_units(size_t size);
138         char* purple_str_seconds_to_string(guint sec);
139         char* purple_str_binary_to_ascii(const(ubyte)* binary, guint len);
140         void purple_got_protocol_handler_uri(const(char)* uri);
141         gboolean purple_url_parse(const(char)* url, char** ret_host, int* ret_port, char** ret_path, char** ret_user, char** ret_passwd);
142         PurpleUtilFetchUrlData* purple_util_fetch_url_request(const(gchar)* url, gboolean full, const(gchar)* user_agent, gboolean http11, const(gchar)* request, gboolean include_headers, PurpleUtilFetchUrlCallback callback, gpointer data);
143         PurpleUtilFetchUrlData* purple_util_fetch_url_request_len(const(gchar)* url, gboolean full, const(gchar)* user_agent, gboolean http11, const(gchar)* request, gboolean include_headers, gssize max_len, PurpleUtilFetchUrlCallback callback, gpointer data);
144         PurpleUtilFetchUrlData* purple_util_fetch_url_request_len_with_account(PurpleAccount* account, const(gchar)* url, gboolean full, const(gchar)* user_agent, gboolean http11, const(gchar)* request, gboolean include_headers, gssize max_len, PurpleUtilFetchUrlCallback callback, gpointer data);
145         void purple_util_fetch_url_cancel(PurpleUtilFetchUrlData* url_data);
146         const(char)* purple_url_decode(const(char)* str);
147         const(char)* purple_url_encode(const(char)* str);
148         gboolean purple_email_is_valid(const(char)* address);
149         gboolean purple_ip_address_is_valid(const(char)* ip);
150         gboolean purple_ipv4_address_is_valid(const(char)* ip);
151         gboolean purple_ipv6_address_is_valid(const(char)* ip);
152         GList* purple_uri_list_extract_uris(const(gchar)* uri_list);
153         GList* purple_uri_list_extract_filenames(const(gchar)* uri_list);
154         gchar* purple_utf8_try_convert(const(char)* str);
155         gchar* purple_utf8_salvage(const(char)* str);
156         gchar* purple_utf8_strip_unprintables(const(gchar)* str);
157         const(gchar)* purple_gai_strerror(gint errnum);
158         int purple_utf8_strcasecmp(const(char)* a, const(char)* b);
159         gboolean purple_utf8_has_word(const(char)* haystack, const(char)* needle);
160         void purple_print_utf8_to_console(FILE* filestream, char* message);
161         gboolean purple_message_meify(char* message, gssize len);
162         char* purple_text_strip_mnemonic(const(char)* in_);
163         const(char)* purple_unescape_filename(const(char)* str);
164         const(char)* purple_escape_filename(const(char)* str);
165         const(char)* _purple_oscar_convert(const(char)* act, const(char)* protocol);
166         void purple_restore_default_signal_handlers();
167         const(gchar)* purple_get_host_name();
168         gchar* purple_uuid_random();
169     }
170 }
171 else
172 {
173     extern( C ) nothrow 
174     {
175 	    alias da_purple_menu_action_new = PurpleMenuAction* function(const(char)* label, PurpleCallback callback, gpointer data, GList* children);					                                                                                                                            																	
176         alias da_purple_menu_action_free = void function(PurpleMenuAction* act);																					                                                                                                                            																	
177         alias da_purple_util_set_current_song = void function(const(char)* title, const(char)* artist, const(char)* album);											                                                                                                                            																	
178         alias da_purple_util_format_song_info = char* function(const(char)* title, const(char)* artist, const(char)* album, gpointer unused);						                                                                                                                            																	
179         alias da_purple_util_init = void function();																												                                                                                                                            																	
180         alias da_purple_util_uninit = void function();																												                                                                                                                            																	
181         alias da_purple_base16_encode = gchar* function(const(guchar)* data, gsize len);																			                                                                                                                            																	
182         alias da_purple_base16_decode = guchar* function(const(char)* str, gsize* ret_len);																			                                                                                                                            																	
183         alias da_purple_base16_encode_chunked = gchar* function(const(guchar)* data, gsize len);																	                                                                                                                            																	
184         alias da_purple_base64_encode = gchar* function(const(guchar)* data, gsize len);																			                                                                                                                            																	
185         alias da_purple_base64_decode = guchar* function(const(char)* str, gsize* ret_len);																			                                                                                                                            																	
186         alias da_purple_quotedp_decode = guchar* function(const(char)* str, gsize* ret_len);																		                                                                                                                            																	
187         alias da_purple_mime_decode_field = char* function(const(char)* str);																						                                                                                                                            																	
188         alias da_purple_utf8_strftime = const(char)* function(const(char)* format, const(tm)* tm);																	                                                                                                                            																	
189         alias da_purple_get_tzoff_str = const(char)* function(const(tm)* tm, gboolean iso);																			                                                                                                                            																	
190         alias da_purple_date_format_short = const(char)* function(const(tm)* tm);																					                                                                                                                            																	
191         alias da_purple_date_format_long = const(char)* function(const(tm)* tm);																					                                                                                                                            																	
192         alias da_purple_date_format_full = const(char)* function(const(tm)* tm);																					                                                                                                                            																	
193         alias da_purple_time_format = const(char)* function(const(tm)* tm);																							                                                                                                                            																	
194         alias da_purple_time_build = time_t function(int year, int month, int day, int hour, int min, int sec);														                                                                                                                            																	
195         alias da_purple_str_to_time = time_t function(const(char)* timestamp, gboolean utc, tm* tm, c_long* tz_off, const(char*)* rest);							                                                                                                                            																	
196         alias da_purple_markup_escape_text = gchar* function(const(gchar)* text, gssize length);																	                                                                                                                            																	
197         alias da_purple_markup_find_tag = gboolean function(const(char)* needle, const(char)* haystack, const(char*)* start, const(char*)* end, GData** attributes);                                                                                                                            																	
198         alias da_purple_markup_extract_info_field = gboolean function(const(char)* str, int len, PurpleNotifyUserInfo* user_info, const(char)* start_token, int skip, const(char)* end_token, char check_value, const(char)* no_value_token, const(char)* display_name, gboolean is_link, const(char)* link_prefix, PurpleInfoFieldFormatCallback format_cb);		
199         alias da_purple_markup_html_to_xhtml = void function(const(char)* html, char** dest_xhtml, char** dest_plain);																																                                                                                                                
200         alias da_purple_markup_strip_html = char* function(const(char)* str);																																										                                                                                                                
201         alias da_purple_markup_linkify = char* function(const(char)* str);																																											                                                                                                                
202         alias da_purple_unescape_text = char* function(const(char)* text);																																											                                                                                                                
203         alias da_purple_unescape_html = char* function(const(char)* html);																																											                                                                                                                
204         alias da_purple_markup_slice = char* function(const(char)* str, guint x, guint y);																																							                                                                                                                
205         alias da_purple_markup_get_tag_name = char* function(const(char)* tag);																																										                                                                                                                
206         alias da_purple_markup_unescape_entity = const(char)* function(const(char)* text, int* length);																																				                                                                                                                
207         alias da_purple_markup_get_css_property = char* function(const(gchar)* style, const(gchar)* opt);																																			                                                                                                                
208         alias da_purple_markup_is_rtl = gboolean function(const(char)* html);																																										                                                                                                                
209         alias da_purple_home_dir = const(gchar)* function();																																														                                                                                                                
210         alias da_purple_user_dir = const(char)* function();																																															                                                                                                                
211         alias da_purple_util_set_user_dir = void function(const(char)* dir);																																										                                                                                                                
212         alias da_purple_build_dir = int function(const(char)* path, int mode);																																										                                                                                                                
213         alias da_purple_util_write_data_to_file = gboolean function(const(char)* filename, const(char)* data, gssize size);																															                                                                                                                
214         alias da_purple_util_write_data_to_file_absolute = gboolean function(const(char)* filename_full, const(char)* data, gssize size);																											                                                                                                                
215         alias da_purple_util_read_xml_from_file = xmlnode* function(const(char)* filename, const(char)* description);																																                                                                                                                
216         alias da_purple_mkstemp = FILE* function(char** path, gboolean binary);																																										                                                                                                                
217         alias da_purple_util_get_image_extension = const(char)* function(gconstpointer data, size_t len);																																			                                                                                                                
218         alias da_purple_util_get_image_checksum = char* function(gconstpointer image_data, size_t image_len);																																		                                                                                                                
219         alias da_purple_util_get_image_filename = char* function(gconstpointer image_data, size_t image_len);																																		                                                                                                                
220         alias da_purple_program_is_valid = gboolean function(const(char)* program);																																									                                                                                                                
221         alias da_purple_running_gnome = gboolean function();																																														                                                                                                                
222         alias da_purple_running_kde = gboolean function();																																															                                                                                                                
223         alias da_purple_running_osx = gboolean function();																																															                                                                                                                
224         alias da_purple_fd_get_ip = char* function(int fd);																																															                                                                                                                
225         alias da_purple_socket_get_family = int function(int fd);																																													                                                                                                                
226         alias da_purple_socket_speaks_ipv4 = gboolean function(int fd);																																												                                                                                                                
227         alias da_purple_strequal = gboolean function(const(gchar)* left, const(gchar)* right);																																						                                                                                                                
228         alias da_purple_normalize = const(char)* function(const(PurpleAccount)* account, const(char)* str);																																			                                                                                                                
229         alias da_purple_normalize_nocase = const(char)* function(const(PurpleAccount)* account, const(char)* str);																																	                                                                                                                
230         alias da_purple_str_has_prefix = gboolean function(const(char)* s, const(char)* p);																																							                                                                                                                
231         alias da_purple_str_has_suffix = gboolean function(const(char)* s, const(char)* x);																																							                                                                                                                
232         alias da_purple_strdup_withhtml = gchar* function(const(gchar)* src);																																										                                                                                                                
233         alias da_purple_str_add_cr = char* function(const(char)* str);																																												                                                                                                                
234         alias da_purple_str_strip_char = void function(char* str, char thechar);																																									                                                                                                                
235         alias da_purple_util_chrreplace = void function(char* string, char delimiter, char replacement);																																			                                                                                                                
236         alias da_purple_strreplace = gchar* function(const(char)* string, const(char)* delimiter, const(char)* replacement);																														                                                                                                                
237         alias da_purple_utf8_ncr_encode = char* function(const(char)* in_);																																											                                                                                                                
238         alias da_purple_utf8_ncr_decode = char* function(const(char)* in_);																																											                                                                                                                
239         alias da_purple_strcasereplace = gchar* function(const(char)* string, const(char)* delimiter, const(char)* replacement);																													                                                                                                                
240         alias da_purple_strcasestr = const(char)* function(const(char)* haystack, const(char)* needle);																																				                                                                                                                
241         alias da_purple_str_size_to_units = char* function(size_t size);																																											                                                                                                                
242         alias da_purple_str_seconds_to_string = char* function(guint sec);																																											                                                                                                                
243         alias da_purple_str_binary_to_ascii = char* function(const(ubyte)* binary, guint len);																																						                                                                                                                
244         alias da_purple_got_protocol_handler_uri = void function(const(char)* uri);																																									                                                                                                                
245         alias da_purple_url_parse = gboolean function(const(char)* url, char** ret_host, int* ret_port, char** ret_path, char** ret_user, char** ret_passwd);																						                                                                                                                
246         alias da_purple_util_fetch_url_request = PurpleUtilFetchUrlData* function(const(gchar)* url, gboolean full, const(gchar)* user_agent, gboolean http11, const(gchar)* request, gboolean include_headers, PurpleUtilFetchUrlCallback callback, gpointer data);																								
247         alias da_purple_util_fetch_url_request_len = PurpleUtilFetchUrlData* function(const(gchar)* url, gboolean full, const(gchar)* user_agent, gboolean http11, const(gchar)* request, gboolean include_headers, gssize max_len, PurpleUtilFetchUrlCallback callback, gpointer data);																			
248         alias da_purple_util_fetch_url_request_len_with_account = PurpleUtilFetchUrlData* function(PurpleAccount* account, const(gchar)* url, gboolean full, const(gchar)* user_agent, gboolean http11, const(gchar)* request, gboolean include_headers, gssize max_len, PurpleUtilFetchUrlCallback callback, gpointer data);										
249         alias da_purple_util_fetch_url_cancel = void function(PurpleUtilFetchUrlData* url_data);																																							                                                                                                        
250         alias da_purple_url_decode = const(char)* function(const(char)* str);																																												                                                                                                        
251         alias da_purple_url_encode = const(char)* function(const(char)* str);																																												                                                                                                        
252         alias da_purple_email_is_valid = gboolean function(const(char)* address);																																											                                                                                                        
253         alias da_purple_ip_address_is_valid = gboolean function(const(char)* ip);																																											                                                                                                        
254         alias da_purple_ipv4_address_is_valid = gboolean function(const(char)* ip);																																											                                                                                                        
255         alias da_purple_ipv6_address_is_valid = gboolean function(const(char)* ip);																																											                                                                                                        
256         alias da_purple_uri_list_extract_uris = GList* function(const(gchar)* uri_list);																																									                                                                                                        
257         alias da_purple_uri_list_extract_filenames = GList* function(const(gchar)* uri_list);																																								                                                                                                        
258         alias da_purple_utf8_try_convert = gchar* function(const(char)* str);																																												                                                                                                        
259         alias da_purple_utf8_salvage = gchar* function(const(char)* str);																																													                                                                                                        
260         alias da_purple_utf8_strip_unprintables = gchar* function(const(gchar)* str);																																										                                                                                                        
261         alias da_purple_gai_strerror = const(gchar)* function(gint errnum);																																													                                                                                                        
262         alias da_purple_utf8_strcasecmp = int function(const(char)* a, const(char)* b);																																										                                                                                                        
263         alias da_purple_utf8_has_word = gboolean function(const(char)* haystack, const(char)* needle);																																						                                                                                                        
264         alias da_purple_print_utf8_to_console = void function(FILE* filestream, char* message);																																								                                                                                                        
265         alias da_purple_message_meify = gboolean function(char* message, gssize len);																																										                                                                                                        
266         alias da_purple_text_strip_mnemonic = char* function(const(char)* in_);																																												                                                                                                        
267         alias da_purple_unescape_filename = const(char)* function(const(char)* str);																																										                                                                                                        
268         alias da_purple_escape_filename = const(char)* function(const(char)* str);																																											                                                                                                        
269         alias da__purple_oscar_convert = const(char)* function(const(char)* act, const(char)* protocol);																																					                                                                                                        
270         alias da_purple_restore_default_signal_handlers = void function();																																													                                                                                                        
271         alias da_purple_get_host_name = const(gchar)* function();																																															                                                                                                        
272         alias da_purple_uuid_random = gchar* function();	
273     }
274 
275     __gshared
276     {
277 	    da_purple_menu_action_new purple_menu_action_new;
278 	    da_purple_menu_action_free purple_menu_action_free;
279 	    da_purple_util_set_current_song purple_util_set_current_song;
280 	    da_purple_util_format_song_info purple_util_format_song_info;
281 	    da_purple_util_init purple_util_init;
282 	    da_purple_util_uninit purple_util_uninit;
283 	    da_purple_base16_encode purple_base16_encode;
284 	    da_purple_base16_decode purple_base16_decode;
285 	    da_purple_base16_encode_chunked purple_base16_encode_chunked;
286 	    da_purple_base64_encode purple_base64_encode;
287 	    da_purple_base64_decode purple_base64_decode;
288 	    da_purple_quotedp_decode purple_quotedp_decode;
289 	    da_purple_mime_decode_field purple_mime_decode_field;
290 	    da_purple_utf8_strftime purple_utf8_strftime;
291 	    da_purple_get_tzoff_str purple_get_tzoff_str;
292 	    da_purple_date_format_short purple_date_format_short;
293 	    da_purple_date_format_long purple_date_format_long;
294 	    da_purple_date_format_full purple_date_format_full;
295 	    da_purple_time_format purple_time_format;
296 	    da_purple_time_build purple_time_build;
297 	    da_purple_str_to_time purple_str_to_time;
298 	    da_purple_markup_escape_text purple_markup_escape_text;
299 	    da_purple_markup_find_tag purple_markup_find_tag;
300 	    da_purple_markup_extract_info_field purple_markup_extract_info_field;
301 	    da_purple_markup_html_to_xhtml purple_markup_html_to_xhtml;
302 	    da_purple_markup_strip_html purple_markup_strip_html;
303 	    da_purple_markup_linkify purple_markup_linkify;
304 	    da_purple_unescape_text purple_unescape_text;
305 	    da_purple_unescape_html purple_unescape_html;
306 	    da_purple_markup_slice purple_markup_slice;
307 	    da_purple_markup_get_tag_name purple_markup_get_tag_name;
308 	    da_purple_markup_unescape_entity purple_markup_unescape_entity;
309 	    da_purple_markup_get_css_property purple_markup_get_css_property;
310 	    da_purple_markup_is_rtl purple_markup_is_rtl;
311 	    da_purple_home_dir purple_home_dir;
312 	    da_purple_user_dir purple_user_dir;
313 	    da_purple_util_set_user_dir purple_util_set_user_dir;
314 	    da_purple_build_dir purple_build_dir;
315 	    da_purple_util_write_data_to_file purple_util_write_data_to_file;
316 	    da_purple_util_write_data_to_file_absolute purple_util_write_data_to_file_absolute;
317 	    da_purple_util_read_xml_from_file purple_util_read_xml_from_file;
318 	    da_purple_mkstemp purple_mkstemp;
319 	    da_purple_util_get_image_extension purple_util_get_image_extension;
320 	    da_purple_util_get_image_checksum purple_util_get_image_checksum;
321 	    da_purple_util_get_image_filename purple_util_get_image_filename;
322 	    da_purple_program_is_valid purple_program_is_valid;
323 	    da_purple_running_gnome purple_running_gnome;
324 	    da_purple_running_kde purple_running_kde;
325 	    da_purple_running_osx purple_running_osx;
326 	    da_purple_fd_get_ip purple_fd_get_ip;
327 	    da_purple_socket_get_family purple_socket_get_family;
328 	    da_purple_socket_speaks_ipv4 purple_socket_speaks_ipv4;
329 	    da_purple_strequal purple_strequal;
330 	    da_purple_normalize purple_normalize;
331 	    da_purple_normalize_nocase purple_normalize_nocase;
332 	    da_purple_str_has_prefix purple_str_has_prefix;
333 	    da_purple_str_has_suffix purple_str_has_suffix;
334 	    da_purple_strdup_withhtml purple_strdup_withhtml;
335 	    da_purple_str_add_cr purple_str_add_cr;
336 	    da_purple_str_strip_char purple_str_strip_char;
337 	    da_purple_util_chrreplace purple_util_chrreplace;
338 	    da_purple_strreplace purple_strreplace;
339 	    da_purple_utf8_ncr_encode purple_utf8_ncr_encode;
340 	    da_purple_utf8_ncr_decode purple_utf8_ncr_decode;
341 	    da_purple_strcasereplace purple_strcasereplace;
342 	    da_purple_strcasestr purple_strcasestr;
343 	    da_purple_str_size_to_units purple_str_size_to_units;
344 	    da_purple_str_seconds_to_string purple_str_seconds_to_string;
345 	    da_purple_str_binary_to_ascii purple_str_binary_to_ascii;
346 	    da_purple_got_protocol_handler_uri purple_got_protocol_handler_uri;
347 	    da_purple_url_parse purple_url_parse;
348 	    da_purple_util_fetch_url_request purple_util_fetch_url_request;
349 	    da_purple_util_fetch_url_request_len purple_util_fetch_url_request_len;
350 	    da_purple_util_fetch_url_request_len_with_account purple_util_fetch_url_request_len_with_account;
351 	    da_purple_util_fetch_url_cancel purple_util_fetch_url_cancel;
352 	    da_purple_url_decode purple_url_decode;
353 	    da_purple_url_encode purple_url_encode;
354 	    da_purple_email_is_valid purple_email_is_valid;
355 	    da_purple_ip_address_is_valid purple_ip_address_is_valid;
356 	    da_purple_ipv4_address_is_valid purple_ipv4_address_is_valid;
357 	    da_purple_ipv6_address_is_valid purple_ipv6_address_is_valid;
358 	    da_purple_uri_list_extract_uris purple_uri_list_extract_uris;
359 	    da_purple_uri_list_extract_filenames purple_uri_list_extract_filenames;
360 	    da_purple_utf8_try_convert purple_utf8_try_convert;
361 	    da_purple_utf8_salvage purple_utf8_salvage;
362 	    da_purple_utf8_strip_unprintables purple_utf8_strip_unprintables;
363 	    da_purple_gai_strerror purple_gai_strerror;
364 	    da_purple_utf8_strcasecmp purple_utf8_strcasecmp;
365 	    da_purple_utf8_has_word purple_utf8_has_word;
366 	    da_purple_print_utf8_to_console purple_print_utf8_to_console;
367 	    da_purple_message_meify purple_message_meify;
368 	    da_purple_text_strip_mnemonic purple_text_strip_mnemonic;
369 	    da_purple_unescape_filename purple_unescape_filename;
370 	    da_purple_escape_filename purple_escape_filename;
371 	    da__purple_oscar_convert _purple_oscar_convert;
372 	    da_purple_restore_default_signal_handlers purple_restore_default_signal_handlers;
373 	    da_purple_get_host_name purple_get_host_name;
374 	    da_purple_uuid_random purple_uuid_random;
375     }
376 }